home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / zgesvd.z / zgesvd
Text File  |  1996-03-14  |  7KB  |  199 lines

  1.  
  2.  
  3.  
  4. ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))                                                          ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ZGESVD - compute the singular value decomposition (SVD) of a complex M-
  10.      by-N matrix A, optionally computing the left and/or right singular
  11.      vectors
  12.  
  13. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  14.      SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK,
  15.                         LWORK, RWORK, INFO )
  16.  
  17.          CHARACTER      JOBU, JOBVT
  18.  
  19.          INTEGER        INFO, LDA, LDU, LDVT, LWORK, M, N
  20.  
  21.          DOUBLE         PRECISION RWORK( * ), S( * )
  22.  
  23.          COMPLEX*16     A( LDA, * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
  24.  
  25. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  26.      ZGESVD computes the singular value decomposition (SVD) of a complex M-
  27.      by-N matrix A, optionally computing the left and/or right singular
  28.      vectors. The SVD is written
  29.  
  30.           A = U * SIGMA * conjugate-transpose(V)
  31.  
  32.      where SIGMA is an M-by-N matrix which is zero except for its min(m,n)
  33.      diagonal elements, U is an M-by-M unitary matrix, and V is an N-by-N
  34.      unitary matrix.  The diagonal elements of SIGMA are the singular values
  35.      of A; they are real and non-negative, and are returned in descending
  36.      order.  The first min(m,n) columns of U and V are the left and right
  37.      singular vectors of A.
  38.  
  39.      Note that the routine returns V**H, not V.
  40.  
  41.  
  42. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  43.      JOBU    (input) CHARACTER*1
  44.              Specifies options for computing all or part of the matrix U:
  45.              = 'A':  all M columns of U are returned in array U:
  46.              = 'S':  the first min(m,n) columns of U (the left singular
  47.              vectors) are returned in the array U; = 'O':  the first min(m,n)
  48.              columns of U (the left singular vectors) are overwritten on the
  49.              array A; = 'N':  no columns of U (no left singular vectors) are
  50.              computed.
  51.  
  52.      JOBVT   (input) CHARACTER*1
  53.              Specifies options for computing all or part of the matrix V**H:
  54.              = 'A':  all N rows of V**H are returned in the array VT;
  55.              = 'S':  the first min(m,n) rows of V**H (the right singular
  56.              vectors) are returned in the array VT; = 'O':  the first min(m,n)
  57.              rows of V**H (the right singular vectors) are overwritten on the
  58.              array A; = 'N':  no rows of V**H (no right singular vectors) are
  59.              computed.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))                                                          ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              JOBVT and JOBU cannot both be 'O'.
  75.  
  76.      M       (input) INTEGER
  77.              The number of rows of the input matrix A.  M >= 0.
  78.  
  79.      N       (input) INTEGER
  80.              The number of columns of the input matrix A.  N >= 0.
  81.  
  82.      A       (input/output) COMPLEX*16 array, dimension (LDA,N)
  83.              On entry, the M-by-N matrix A.  On exit, if JOBU = 'O',  A is
  84.              overwritten with the first min(m,n) columns of U (the left
  85.              singular vectors, stored columnwise); if JOBVT = 'O', A is
  86.              overwritten with the first min(m,n) rows of V**H (the right
  87.              singular vectors, stored rowwise); if JOBU .ne. 'O' and JOBVT
  88.              .ne. 'O', the contents of A are destroyed.
  89.  
  90.      LDA     (input) INTEGER
  91.              The leading dimension of the array A.  LDA >= max(1,M).
  92.  
  93.      S       (output) DOUBLE PRECISION array, dimension (min(M,N))
  94.              The singular values of A, sorted so that S(i) >= S(i+1).
  95.  
  96.      U       (output) COMPLEX*16 array, dimension (LDU,UCOL)
  97.              (LDU,M) if JOBU = 'A' or (LDU,min(M,N)) if JOBU = 'S'.  If JOBU =
  98.              'A', U contains the M-by-M unitary matrix U; if JOBU = 'S', U
  99.              contains the first min(m,n) columns of U (the left singular
  100.              vectors, stored columnwise); if JOBU = 'N' or 'O', U is not
  101.              referenced.
  102.  
  103.      LDU     (input) INTEGER
  104.              The leading dimension of the array U.  LDU >= 1; if JOBU = 'S' or
  105.              'A', LDU >= M.
  106.  
  107.      VT      (output) COMPLEX*16 array, dimension (LDVT,N)
  108.              If JOBVT = 'A', VT contains the N-by-N unitary matrix V**H; if
  109.              JOBVT = 'S', VT contains the first min(m,n) rows of V**H (the
  110.              right singular vectors, stored rowwise); if JOBVT = 'N' or 'O',
  111.              VT is not referenced.
  112.  
  113.      LDVT    (input) INTEGER
  114.              The leading dimension of the array VT.  LDVT >= 1; if JOBVT =
  115.              'A', LDVT >= N; if JOBVT = 'S', LDVT >= min(M,N).
  116.  
  117.      WORK    (workspace/output) COMPLEX*16 array, dimension (LWORK)
  118.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  119.  
  120.      LWORK   (input) INTEGER
  121.              The dimension of the array WORK. LWORK >= 1.  LWORK >=
  122.              2*MIN(M,N)+MAX(M,N).  For good performance, LWORK should
  123.              generally be larger.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))                                                          ZZZZGGGGEEEESSSSVVVVDDDD((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      RWORK   (workspace) DOUBLE PRECISION array, dimension
  141.              (max(3*min(M,N),5*min(M,N)-4)) On exit, if INFO > 0,
  142.              RWORK(1:MIN(M,N)-1) contains the unconverged superdiagonal
  143.              elements of an upper bidiagonal matrix B whose diagonal is in S
  144.              (not necessarily sorted).  B satisfies A = U * B * VT, so it has
  145.              the same singular values as A, and singular vectors related by U
  146.              and VT.
  147.  
  148.      INFO    (output) INTEGER
  149.              = 0:  successful exit.
  150.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  151.              > 0:  if ZBDSQR did not converge, INFO specifies how many
  152.              superdiagonals of an intermediate bidiagonal form B did not
  153.              converge to zero. See the description of RWORK above for details.
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.